package com.animerank.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.animerank.entity.Favorite;
import com.animerank.dto.Result;

import java.util.List;
import java.util.Map;

/**
 * 收藏服务接口
 */
public interface IFavoriteService extends IService<Favorite> {

    /**
     * 收藏动漫
     * @param animeId 动漫ID
     * @return 收藏结果
     */
    Result<?> addFavorite(Long animeId);

    /**
     * 取消收藏动漫
     * @param animeId 动漫ID
     * @return 取消收藏结果
     */
    Result<?> removeFavorite(Long animeId);

    /**
     * 检查用户是否已收藏动漫
     * @param animeId 动漫ID
     * @return 检查结果
     */
    Result<Boolean> checkFavorite(Long animeId);

    /**
     * 获取用户收藏的动漫ID列表（支持分页）
     * @param page 页码
     * @param pageSize 每页数量
     * @return 分页数据，包含动漫ID列表和总数
     */
    Result<Map<String, Object>> getUserFavoriteIds(Integer page, Integer pageSize);

    /**
     * 获取动漫的收藏数量
     * @param animeId 动漫ID
     * @return 收藏数量
     */
    Result<Integer> getAnimeFavoriteCount(Long animeId);
    
    /**
     * 批量检查用户是否已收藏动漫
     * @param animeIds 动漫ID列表
     * @return 动漫ID和收藏状态的映射
     */
    Result<Map<Long, Boolean>> batchCheckFavorites(List<Long> animeIds);

}